package com.speedchina.framework.base;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.io.Serializable;
import java.util.List;

/**
 * Service服务层接口
 *
 * @author hank
 * @create 2018-10-19 上午10:46
 **/

public interface IService<T> extends com.baomidou.mybatisplus.extension.service.IService<T> {

    /**
     * 新增或修改，通过判断主键是否为空，若空则自动生成（字符串）ID，不空则执行更新操作
     * @param entity
     * @return
     */
    boolean saveOrUpdate4AutoGenId(T entity);

    /**
     * 根据组合条件 查询结果对象
     * @param params
     * @param <M>
     * @return
     */
    <M extends T> M get(M params);

    /**
     * 获取分页结果,适用于参数为实体的场景
     * @param model
     * @return
     */
    <M extends T> Page queryPage(QueryModel<M> model);

    /**
     * 获取查询结果集
     * @param params
     * @param <M>
     * @return
     */
    <M extends T> List<M> queryList(M params);

    /**
     * 批量更新
     * @param ts
     * @return
     */
    boolean batchUpdate(T[] ts);

    /**
     * 批量删除（物理删除）
     * @param ids
     * @return
     */
    boolean deleteBatch(List<Serializable> ids);
}
